package org.cerberus.platform.internal;

import java.util.Collection;
import java.util.List;
import java.util.Map;

import org.cerberus.platform.internal.domain.IComponentClass;


public interface IObjectGraphTransaction {

	void addComponentClass(IComponentClass clazz);
	
	void removeComponentClass(String classID);
	
	void addObjectChange(Integer hash, int index, int attributeCount, Object value);
	
	void addObject(Integer hash, Object[] objectData);
	
	void removeObject(Integer hash);
	
	void removeObjects(Collection<Integer> hashes);

	
	Map<String, IComponentClass> getAddClasses();

	List<String> getRemoveClasses();

	Map<Integer, Object[]> getAddObjects();

	List<Integer> getRemoveObjects();
	
	Map<Integer, Object[]> getObjectChanges();
	
	boolean isEmpty();
	
}
